class Specobject specobject {
  var int min_card
  var int max_card 
  var string supported_kind #list
  var string reject_kind #list
  var boolean extra_document
  var boolean extra_container
  var boolean required_value
}
class Component component {
  var int min_card
  var int max_card 
  var string supported_kind #list
  var string reject_kind #list
  var boolean extra_document
  var boolean extra_container
  var boolean required_value
}

class External external {
  var int min_card
  var int max_card 
  var string supported_kind #list
  var string reject_kind #list
  var boolean extra_document
  var boolean extra_container
  var boolean required_value
}

class Double double {
  var int min_card
  var int max_card 
  var double min_value
  var double max_value
  var double values #list
  var boolean required_value
}

class Int int {
  var int min_card
  var int max_card 
  var int min_value
  var int max_value
  var int values #list
  var boolean required_value
}

class String string {
  var int min_card
  var int max_card 
  var string min_value
  var string max_value
  var string values #list
  var boolean required_value
}

class Boolean boolean {
  var int min_card
  var int max_card 
  var boolean min_value
  var boolean max_value
  var boolean values #list
  var boolean required_value
}

class Octet octet {
  var int min_card
  var int max_card 
  var octet min_value
  var octet max_value
  var octet values #list
  var boolean required_value
}

class Any any {
  var int min_card
  var int max_card 
  var string supported_kind #list
  var string reject_kind #list
  var boolean extra_document
  var boolean extra_container
  var any min_value
  var any max_value
  var any values #list
  var boolean required_value
}

class XtsRsc {
  boolean IsLocal #required
  string Extends #required  #list
  string Container #required
  string ContType #required
  def CheckSetFacet = `CheckCreationParameterFacetSet`@`CATObjectSpecsModeler`
}

class CATIUseEntityRsc {
  boolean implementInterface
  boolean implementUpdateAspect
  boolean implementDeleteAspect
  boolean implementCopyPasteAspect
  def CheckSetFacet =  `CheckCATIUseEntityFacetSet`@`CATObjectSpecsModeler`
}

class ExternalLinkMetaData {
  string `meta_data_relation->category` #required
  string `meta_data_relation->role` #required
  boolean `meta_data_link->sync_button`
  boolean `meta_data_link->logical_reroute_button`
  boolean `meta_data_link->functional_reroute_button`
  boolean `meta_data_link->deactivation_button`
  boolean `meta_data_link->visibility`
  boolean `meta_data_link->never_synchronized`
}

class SemanticRelation {
  string `semantic_relation->type` #required
}

__enum__ `osm::mandatoriness` #stick(Allowed) { Allowed=1, Forbidden, Mandatory}
__enum__ `osm::aggregation::repair_mode` #stick(DeleteCompo) { DeleteCompo=2, None=1, Relink=4, Unlink=3}

__enum__ `osm::ext_catia_version` { V5R16, V5R17, V5R18, V5R19, V5R20, V5R21, V5R22, V5R23, V5R24, V5R25, V5R26, V5R27, V5R28, V5R29 }

__enum__ `v6v5compliance` { undefined, compatible, inherited, incompatible }
